package com.team.RunsFast_Api.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.team.RunsFast_Api.dao.CartDao;
import com.team.RunsFast_Api.dto.CartAddDto;
import com.team.RunsFast_Api.dto.CartUpdateDto;
import com.team.RunsFast_Api.service.intf.CartService;
import com.team.runsfast.entity.Cart;
import com.team.runsfast.vo.R;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class CartServiceImpl implements CartService {
    @Resource
    private CartDao dao;


    @Override
    public R queryAll() {
        return R.ok(dao.selectList(null));
    }

    @Override
    public R add(CartAddDto dto, String token) {
        //1.入参校验
        if(dto!=null){
            long uid=Long.parseLong(token);
            //2.查询 是否存在 如果存在就是修改数量 不存在就是新增
            Cart cart=dao.selectOne(new QueryWrapper<Cart>().eq("uid",uid).eq("fid",dto.getFid()));
            //3.验证购物车是否存在本商品
            if(cart==null){
                //4.新增
                dao.insert(new Cart(uid,dto.getFid(),dto.getNum(),dto.getPrice()));
            }else {
                //5.添加本次的数量
                cart.setNum(cart.getNum()+dto.getNum());
                dao.updateById(cart);
            }
            return R.ok();
        }
        return R.fail();
    }

    @Override
    public R updateNum(CartUpdateDto dto) {
        //1.入参的校验
        if(dto!=null){
            if(dto.getNum()>0) {
                //2.查询一下数据库
                Cart cart = dao.selectById(dto.getId());
                //3.验证是否存在
                if (cart != null) {
                    //4修改数量
                    cart.setNum(dto.getNum());
                    //5操作数据库
                    dao.updateById(cart);
                    return R.ok();
                }
            }else {
                return del(dto.getId());
            }
        }
        return R.fail();
    }

    @Override
    public R del(long id) {
        if(id>0){
            if(dao.deleteById(id)>0){
                return R.ok();
            }
        }
        return R.fail();
    }

    @Override
    public R queryMy(String token) {
        System.err.println("------------");
        System.err.println(token);
        return R.ok(dao.selectByUid(Long.parseLong(token)));
    }
}